// 保留几位小数小数

/**
 * 四舍五入
 * 将数值类型的数据改变成了字符串类型
 */
const fixed = (number, count = 2) => {
	return number.toFixed(count)
}

/**
 * 四舍五入，若后面小数位0，则不显示
 * bool：是否补0。如果补0，则是字符串
 */
const round = (number, count = 2, bool) => {
	const temp = Math.pow(10, count)
	const res = Math.round(number * temp) / temp
	if (bool) {
		return addZero(res, count)
	}
	return res
}

/**
 * 不四舍五入，向下取整
 * bool：是否补0。如果补0，则是字符串
 */
const floor = (number, count = 2, bool) => {
	const temp = Math.pow(10, count)
	const res = Math.floor(number * temp) / temp
	if (bool) {
		return addZero(res, count)
	}
	return res
}

/**
 * 不四舍五入，向上取整
 * bool：是否补0。如果补0，则是字符串
 */
const ceiling = (number, count = 2, bool) => {
	let res = parseInt(number)
	if (res === number) {
		// 没有去尾，就是整数
	} else {
		 res += 1
	}
	if (bool) {
		let str = '.'
		for (let i = 0; i < count; i++) {
			str += '0'
		}
		return res + str
	}
	return res
}

/**
 * 小数不足位补0。补0后变为字符串的形式了
 */
const addZero = (number, count = 2) => {
	const arr = number.toString().split('.')
	if (arr.length === 1) {
		var str = ''
		for (var i = 0; i < count; i++) {
			str += '0'
		}
		arr.push(str)
	} else if (arr.length === 2) {
		var str = arr[1]
		for (var i = 0; i < count - arr[1].length; i++) {
			str += '0'
		}
		arr.splice(1, 1, str)
	}
	return arr.join('.')
}

/**
 * 进制互转
 * 默认10进制转16进制
 */
const decimal = (value, from = 10, to = 16) => {
	// 先转化为10进制，再转为其他进制
	value = parseInt(value, from)
	return value.toString(to)
}

/**
 * 将数字转为中文
 */
const arr1 = new Array('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九')   
const arr2 = new Array('', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千','万', '十', '百', '千', '亿') 
const convertToChinaNum = (num) => {
    if(!num || isNaN(num)){        
        return arr1[0]
    }    
    const english = num.toString().split('')
	let result = ''
    for (let i = 0; i < english.length; i++) {
        const des_i = english.length - 1 - i // 倒序排列设值
        result = arr2[i] + result
        const arr1_index = english[des_i]
        result = arr1[arr1_index] + result
    }    
    // 将【〇千、〇百】换成【〇】 【十〇】换成【十】    
    result = result.replace(/〇(千|百|十)/g, '〇').replace(/十〇/g, '十')
    // 合并中间多个〇为一个〇    
    result = result.replace(/〇+/g, '〇')
    // 将【〇亿】换成【亿】【〇万】换成【万】    
    result = result.replace(/〇亿/g, '亿').replace(/〇万/g, '万')
    // 将【亿万】换成【亿】    
    result = result.replace(/亿万/g, '亿')
    // 移除末尾的〇    
    result = result.replace(/〇+$/, '')    
    // 将【〇一十】换成【〇十】    
    //result = result.replace(/〇一十/g, '〇十')
    // 貌似正规读法是〇一十    
    // 将【一十】换成【十】
    result = result.replace(/^一十/g, '十')
    return result
}

module.exports = {
	fixed, // 四舍五入。字符串类型
	round, // 四舍五入。按要求是否补0
	floor, // 不四舍五入，直接去尾
	ceiling, // 不四舍五入，向上取整
	decimal, // 进制互转
	convertToChinaNum, // 数字转中文
}